<?php

namespace MoChat\App\Client\Contract;

interface ClientTagGroupContract
{
    /**
     * 删除 - 单条
     * @param int $id 删除ID
     * @return int 删除条数
     */
    public function deleteWorkContactTagGroup(int $id): int;

    /**
     * 修改单条 - 根据ID.
     * @param int $id id
     * @param array $data 修改数据
     * @return int 修改条数
     */
    public function updateWorkContactTagGroupById(int $id, array $data): int;

    /**
     * 查询单条 - 根据ID.
     * @param int $id ID
     * @param array|string[] $columns 查询字段
     * @return array 数组
     */
    public function getWorkContactTagGroupById(int $id, array $columns = ['*']): array;

    /**
     * 查询多条 - 根据分组名称.
     * @param array|string[] $columns 查询字段
     * @return array 数组
     */
    public function getWorkContactTagGroupsByNameId(int $corpId, string $groupName, int $id, array $columns = ['*']): array;

    /**
     * 查询多条 - 根据企业ID.
     * @param array $corpId 企业ID
     * @param array|string[] $columns 查询字段
     * @return array 数组
     */
    public function getWorkContactTagGroupsByCorpIdOrder(array $corpId, array $columns = ['*']): array;

    /**
     * 查询多条 - 根据ID.
     * @param array $ids ID
     * @param array|string[] $columns 查询字段
     * @return array 数组
     */
    public function getWorkContactTagGroupsById(array $ids, array $columns = ['*']): array;

    /**
     * 查询多条 - 根据企业ID.
     * @param array $corpId 企业ID
     * @param array|string[] $columns 查询字段
     * @return array 数组
     */
    public function getWorkContactTagGroupsByCorpId(array $corpId, array $columns = ['*']): array;

    /**
     * @param int $id
     * @param array $columns
     * @return array
     */
    public function getClientTagGroupById(int $id, array $columns = ['*']): array;

    /**
     * 查询多条 - 根据分组名称.
     * @param array|string[] $columns 查询字段
     * @return array 数组
     */
    public function getWorkContactTagGroupsByName(int $corpId, string $groupName, array $columns = ['*']): array;

    /**
     * 查询条数.
     */
    public function countWorkContactTagGroup(int $corpId): int;

    /**
     * 添加单条
     * @param array $data 添加的数据
     * @return int 自增ID
     */
    public function createWorkContactTagGroup(array $data): int;

    /**
     * 添加多条
     * @param array $data 添加的数据
     * @return bool 执行结果
     */
    public function createWorkContactTags(array $data): bool;

    /**
     * 通过where条件获取数据
     * @param $where
     * @param array $filed
     * @return array|null
     */
    public function getOneWorkContactTagGroupByWhere($where, array $filed = ['*']): ?array;
}